﻿using System;
using MoonSharp.Interpreter;
using UnityEngine;

namespace Lua
{
	// Token: 0x02000300 RID: 768
	[MoonSharpUserData]
	public class Vector3
	{
		// Token: 0x06001346 RID: 4934 RVA: 0x000827C0 File Offset: 0x000809C0
		[MoonSharpHidden]
		public Vector3(Vector3 vector3)
		{
			this.vector3 = vector3;
		}

		// Token: 0x06001347 RID: 4935 RVA: 0x000827CF File Offset: 0x000809CF
		[MoonSharpHidden]
		public Vector3(float x, float y, float z)
		{
			this.vector3 = new Vector3(x, y, z);
		}

		// Token: 0x17000302 RID: 770
		// (get) Token: 0x06001348 RID: 4936 RVA: 0x000827E5 File Offset: 0x000809E5
		// (set) Token: 0x06001349 RID: 4937 RVA: 0x000827F2 File Offset: 0x000809F2
		public float x
		{
			get
			{
				return this.vector3.x;
			}
			set
			{
				this.vector3.x = value;
			}
		}

		// Token: 0x17000303 RID: 771
		// (get) Token: 0x0600134A RID: 4938 RVA: 0x00082800 File Offset: 0x00080A00
		// (set) Token: 0x0600134B RID: 4939 RVA: 0x0008280D File Offset: 0x00080A0D
		public float y
		{
			get
			{
				return this.vector3.y;
			}
			set
			{
				this.vector3.y = value;
			}
		}

		// Token: 0x17000304 RID: 772
		// (get) Token: 0x0600134C RID: 4940 RVA: 0x0008281B File Offset: 0x00080A1B
		// (set) Token: 0x0600134D RID: 4941 RVA: 0x00082828 File Offset: 0x00080A28
		public float z
		{
			get
			{
				return this.vector3.z;
			}
			set
			{
				this.vector3.z = value;
			}
		}

		// Token: 0x17000305 RID: 773
		// (get) Token: 0x0600134E RID: 4942 RVA: 0x00082836 File Offset: 0x00080A36
		public float magnitude
		{
			get
			{
				return this.vector3.magnitude;
			}
		}

		// Token: 0x17000306 RID: 774
		// (get) Token: 0x0600134F RID: 4943 RVA: 0x00082843 File Offset: 0x00080A43
		public float sqrMagnitude
		{
			get
			{
				return this.vector3.sqrMagnitude;
			}
		}

		// Token: 0x17000307 RID: 775
		// (get) Token: 0x06001350 RID: 4944 RVA: 0x00082850 File Offset: 0x00080A50
		public Vector3 normalized
		{
			get
			{
				return new Vector3(this.vector3.normalized);
			}
		}

		// Token: 0x17000308 RID: 776
		// (get) Token: 0x06001351 RID: 4945 RVA: 0x00082862 File Offset: 0x00080A62
		public static Vector3 back
		{
			get
			{
				return new Vector3(Vector3.back);
			}
		}

		// Token: 0x17000309 RID: 777
		// (get) Token: 0x06001352 RID: 4946 RVA: 0x0008286E File Offset: 0x00080A6E
		public static Vector3 down
		{
			get
			{
				return new Vector3(Vector3.down);
			}
		}

		// Token: 0x1700030A RID: 778
		// (get) Token: 0x06001353 RID: 4947 RVA: 0x0008287A File Offset: 0x00080A7A
		public static Vector3 forward
		{
			get
			{
				return new Vector3(Vector3.forward);
			}
		}

		// Token: 0x1700030B RID: 779
		// (get) Token: 0x06001354 RID: 4948 RVA: 0x00082886 File Offset: 0x00080A86
		public static Vector3 left
		{
			get
			{
				return new Vector3(Vector3.left);
			}
		}

		// Token: 0x1700030C RID: 780
		// (get) Token: 0x06001355 RID: 4949 RVA: 0x00082892 File Offset: 0x00080A92
		public static Vector3 one
		{
			get
			{
				return new Vector3(Vector3.one);
			}
		}

		// Token: 0x1700030D RID: 781
		// (get) Token: 0x06001356 RID: 4950 RVA: 0x0008289E File Offset: 0x00080A9E
		public static Vector3 right
		{
			get
			{
				return new Vector3(Vector3.right);
			}
		}

		// Token: 0x1700030E RID: 782
		// (get) Token: 0x06001357 RID: 4951 RVA: 0x000828AA File Offset: 0x00080AAA
		public static Vector3 up
		{
			get
			{
				return new Vector3(Vector3.up);
			}
		}

		// Token: 0x1700030F RID: 783
		// (get) Token: 0x06001358 RID: 4952 RVA: 0x000828B6 File Offset: 0x00080AB6
		public static Vector3 zero
		{
			get
			{
				return new Vector3(Vector3.zero);
			}
		}

		// Token: 0x06001359 RID: 4953 RVA: 0x000828C2 File Offset: 0x00080AC2
		public static Vector3 New(float x, float y, float z)
		{
			return new Vector3(new Vector3(x, y, z));
		}

		// Token: 0x0600135A RID: 4954 RVA: 0x000828D1 File Offset: 0x00080AD1
		public override string ToString()
		{
			return this.vector3.ToString();
		}

		// Token: 0x0600135B RID: 4955 RVA: 0x00081608 File Offset: 0x0007F808
		[MoonSharpUserDataMetamethod("__concat")]
		public static string Concat(Vector3 o, string v)
		{
			return o.ToString() + v;
		}

		// Token: 0x0600135C RID: 4956 RVA: 0x00081616 File Offset: 0x0007F816
		[MoonSharpUserDataMetamethod("__concat")]
		public static string Concat(string v, Vector3 o)
		{
			return v + o.ToString();
		}

		// Token: 0x0600135D RID: 4957 RVA: 0x00081624 File Offset: 0x0007F824
		[MoonSharpUserDataMetamethod("__concat")]
		public static string Concat(Vector3 o1, Vector3 o2)
		{
			return o1.ToString() + o2.ToString();
		}

		// Token: 0x0600135E RID: 4958 RVA: 0x000828E4 File Offset: 0x00080AE4
		[MoonSharpUserDataMetamethod("__eq")]
		public static bool Eq(Vector3 o1, Vector3 o2)
		{
			return (o1 == null && o2 == null) || (o1 != null && o2 != null && o1.vector3 == o2.vector3);
		}

		// Token: 0x0600135F RID: 4959 RVA: 0x00082913 File Offset: 0x00080B13
		public static Vector3 operator +(Vector3 o1, Vector3 o2)
		{
			return new Vector3(o1.vector3 + o2.vector3);
		}

		// Token: 0x06001360 RID: 4960 RVA: 0x0008292B File Offset: 0x00080B2B
		public static Vector3 operator -(Vector3 o1, Vector3 o2)
		{
			return new Vector3(o1.vector3 - o2.vector3);
		}

		// Token: 0x06001361 RID: 4961 RVA: 0x00082943 File Offset: 0x00080B43
		public static Vector3 operator -(Vector3 o1)
		{
			return new Vector3(-o1.vector3);
		}

		// Token: 0x06001362 RID: 4962 RVA: 0x00082955 File Offset: 0x00080B55
		public static Vector3 operator *(Vector3 o1, float f)
		{
			return new Vector3(o1.vector3 * f);
		}

		// Token: 0x06001363 RID: 4963 RVA: 0x00082968 File Offset: 0x00080B68
		public static Vector3 operator *(float f, Vector3 o1)
		{
			return new Vector3(f * o1.vector3);
		}

		// Token: 0x06001364 RID: 4964 RVA: 0x0008297B File Offset: 0x00080B7B
		public static Vector3 operator /(Vector3 o1, float f)
		{
			return new Vector3(o1.vector3 / f);
		}

		// Token: 0x06001365 RID: 4965 RVA: 0x0008298E File Offset: 0x00080B8E
		public void Normalize()
		{
			this.vector3.Normalize();
		}

		// Token: 0x06001366 RID: 4966 RVA: 0x0008299B File Offset: 0x00080B9B
		public void Set(float x, float y, float z)
		{
			this.vector3.Set(x, y, z);
		}

		// Token: 0x06001367 RID: 4967 RVA: 0x000829AB File Offset: 0x00080BAB
		public static float Angle(Vector3 from, Vector3 to)
		{
			return Vector3.Angle(from.vector3, to.vector3);
		}

		// Token: 0x06001368 RID: 4968 RVA: 0x000829BE File Offset: 0x00080BBE
		public static Vector3 ClampMagnitude(Vector3 vector, float maxLength)
		{
			return new Vector3(Vector3.ClampMagnitude(vector.vector3, maxLength));
		}

		// Token: 0x06001369 RID: 4969 RVA: 0x000829D1 File Offset: 0x00080BD1
		public static Vector3 Cross(Vector3 lhs, Vector3 rhs)
		{
			return new Vector3(Vector3.Cross(lhs.vector3, rhs.vector3));
		}

		// Token: 0x0600136A RID: 4970 RVA: 0x000829E9 File Offset: 0x00080BE9
		public static float Distance(Vector3 a, Vector3 b)
		{
			return Vector3.Distance(a.vector3, b.vector3);
		}

		// Token: 0x0600136B RID: 4971 RVA: 0x000829FC File Offset: 0x00080BFC
		public static float Dot(Vector3 lhs, Vector3 rhs)
		{
			return Vector3.Dot(lhs.vector3, rhs.vector3);
		}

		// Token: 0x0600136C RID: 4972 RVA: 0x00082A0F File Offset: 0x00080C0F
		public static Vector3 Lerp(Vector3 a, Vector3 b, float t)
		{
			return new Vector3(Vector3.Lerp(a.vector3, b.vector3, t));
		}

		// Token: 0x0600136D RID: 4973 RVA: 0x00082A28 File Offset: 0x00080C28
		public static Vector3 LerpUnclamped(Vector3 a, Vector3 b, float t)
		{
			return new Vector3(Vector3.LerpUnclamped(a.vector3, b.vector3, t));
		}

		// Token: 0x0600136E RID: 4974 RVA: 0x00082A41 File Offset: 0x00080C41
		public static Vector3 Max(Vector3 lhs, Vector3 rhs)
		{
			return new Vector3(Vector3.Max(lhs.vector3, rhs.vector3));
		}

		// Token: 0x0600136F RID: 4975 RVA: 0x00082A59 File Offset: 0x00080C59
		public static Vector3 Min(Vector3 lhs, Vector3 rhs)
		{
			return new Vector3(Vector3.Min(lhs.vector3, rhs.vector3));
		}

		// Token: 0x06001370 RID: 4976 RVA: 0x00082A71 File Offset: 0x00080C71
		public static Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta)
		{
			return new Vector3(Vector3.MoveTowards(current.vector3, target.vector3, maxDistanceDelta));
		}

		// Token: 0x06001371 RID: 4977 RVA: 0x00082A8A File Offset: 0x00080C8A
		public static Vector3 Project(Vector3 vector, Vector3 onNormal)
		{
			return new Vector3(Vector3.Project(vector.vector3, onNormal.vector3));
		}

		// Token: 0x06001372 RID: 4978 RVA: 0x00082AA2 File Offset: 0x00080CA2
		public static Vector3 ProjectOnPlane(Vector3 vector, Vector3 planeNormal)
		{
			return new Vector3(Vector3.ProjectOnPlane(vector.vector3, planeNormal.vector3));
		}

		// Token: 0x06001373 RID: 4979 RVA: 0x00082ABA File Offset: 0x00080CBA
		public static Vector3 Reflect(Vector3 inDirection, Vector3 inNormal)
		{
			return new Vector3(Vector3.Reflect(inDirection.vector3, inNormal.vector3));
		}

		// Token: 0x06001374 RID: 4980 RVA: 0x00082AD2 File Offset: 0x00080CD2
		public static Vector3 RotateTowards(Vector3 current, Vector3 target, float maxRadiansDelta, float maxMagnitudeDelta)
		{
			return new Vector3(Vector3.RotateTowards(current.vector3, target.vector3, maxRadiansDelta, maxMagnitudeDelta));
		}

		// Token: 0x06001375 RID: 4981 RVA: 0x00082AEC File Offset: 0x00080CEC
		public static Vector3 Scale(Vector3 a, Vector3 b)
		{
			return new Vector3(Vector3.Scale(a.vector3, b.vector3));
		}

		// Token: 0x06001376 RID: 4982 RVA: 0x00082B04 File Offset: 0x00080D04
		public static Vector3 Slerp(Vector3 a, Vector3 b, float t)
		{
			return new Vector3(Vector3.Slerp(a.vector3, b.vector3, t));
		}

		// Token: 0x06001377 RID: 4983 RVA: 0x00082B1D File Offset: 0x00080D1D
		public static Vector3 SlerpUnclamped(Vector3 a, Vector3 b, float t)
		{
			return new Vector3(Vector3.SlerpUnclamped(a.vector3, b.vector3, t));
		}

		// Token: 0x040016DB RID: 5851
		[MoonSharpHidden]
		public Vector3 vector3;
	}
}
